/**
 * 
 */
package info.pello.games.libgdx.pong;


/**
 * World
 * @author Pello Xabier
 * Clase que representa el mundo del juego. Un mundo compuesto
 * por paredes laterales, una pala en la parte de abajo y una pared
 * en la parte de arriba. Y una pelotilla que va y viene.
 */
public class World {

	private Pelota pelota;
	private Pala pala;
	private Pala pala2;
	public World(){
		initialize();
	}
	
	private void initialize () {
		double altura = 14.5;
		pelota = new Pelota();
		pala = new Pala(4,0);
		pala2 = new Pala(4,14.5f);
	}
	
	/**
	 * update
	 * updates world status
	 * @param delta
	 */
	public void update () {
		
		pelota.posicion.add(pelota.direccion.x*0.05f, pelota.direccion.y*0.05f, 0);

		// Toca la pala? ¡para arriba!
		if (pelota.posicion.x > pala.posicion.x && pelota.posicion.x <= pala.posicion.x + 3 &&
				pelota.posicion.y <= 1 && pelota.posicion.y > 0) {
		
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Palazo : pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");

		} 
		
		// Toca el techo? ¡para abajo!
		if (pelota.posicion.y >= 14 && pelota.posicion.y < 15 && pelota.posicion.x > pala2.posicion.x && pelota.posicion.x <= pala2.posicion.x + 3) {
			pelota.direccion.y = -pelota.velocidad;			
			System.out.println("Choque techo pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");


		}
			
		if (pelota.posicion.x < 0) {
			pelota.direccion.x = pelota.velocidad;
			System.out.println("Choque izq pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");


		}

		if (pelota.posicion.x > 10) {
			pelota.direccion.x = -pelota.velocidad;
			System.out.println("Choque dcha pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");


		}
		
		if (pelota.posicion.y < 0 || pelota.posicion.y > 15) {
			System.out.println("Cayó pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
			pelota = new Pelota();
		}
		
	


	}

	/**
	 * @return the pelota
	 */
	public Pelota getPelota() {
		return pelota;
	}

	/**
	 * @param pelota the pelota to set
	 */
	public void setPelota(Pelota pelota) {
		this.pelota = pelota;
	}

	/**
	 * @return the pala
	 */
	public Pala getPala() {
		return pala;
	}

	/**
	 * @param pala the pala to set
	 */
	public void setPala(Pala pala) {
		this.pala = pala;
	}

	/**
	 * @return the pala2
	 */
	public Pala getPala2() {
		return pala2;
	}

	/**
	 * @param pala2 the pala2 to set
	 */
	public void setPala2(Pala pala2) {
		this.pala2 = pala2;
	}
	
	
	
}
